//--------------------------------------------------------------------------------
// This file is a portion of the D2D1Renderer.  It is distributed
// under the MIT License, available in the root of this distribution and 
// at the following URL:
//
// http://www.opensource.org/licenses/mit-license.php
//
// Copyright (c) Mirco Timmermann
//
// Sources: http://www.w3.org/TR/2dcontext/
//--------------------------------------------------------------------------------
#pragma once

#ifndef __CANVAS_FLOAT
#define __CANVAS_FLOAT
#endif

#include <string>


class CanvasPathMethods {

///////////////////////////////////////////////////////////////////////////////////////////////
//                                     PATH INTERFACE                                        //
///////////////////////////////////////////////////////////////////////////////////////////////

public:
	
	CanvasPathMethods::CanvasPathMethods() {
		
	}

#ifdef __CANVAS_DOUBLE
	// shared path API methods
    virtual void closePath() = 0;
    virtual void moveTo(double x, double y) = 0;
    virtual void lineTo(double x, double y) = 0;
    virtual void quadraticCurveTo(double cpx, double cpy, double x, double y) = 0;
    virtual void bezierCurveTo(double cp1x, double cp1y, double cp2x, double cp2y, double x, double y) = 0;
    virtual void arcTo(double x1, double y1, double x2, double y2, double radius) = 0;
    virtual void rect(double x, double y, double w, double h) = 0;
    virtual void arc(double x, double y, double radius, double startAngle, double endAngle, bool anticlockwise = false) = 0; 
#endif

#ifdef __CANVAS_FLOAT
	// shared path API methods
    virtual void closePath() = 0;
    virtual void moveTo(float x, float y) = 0;
    virtual void lineTo(float x, float y) = 0;
    virtual void quadraticCurveTo(float cpx, float cpy, float x, float y) = 0;
    virtual void bezierCurveTo(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y) = 0;
    virtual void arcTo(float x1, float y1, float x2, float y2, float radius) = 0;
    virtual void rect(float x, float y, float w, float h) = 0;
    virtual void arc(float x, float y, float radius, float startAngle, float endAngle, bool anticlockwise = false) = 0; 
#endif


};